package com.zwh.tool.utils;

/**
 * 各种正则表达式判断工具类
 * 语法(举例)(TIPS:区分大小写)：
 * runoo+b，可以匹配 runoob、runooob、runoooooob 等，+ 号代表前面的字符必须至少出现一次（1次或多次）。
 * runoo*b，可以匹配 runob、runoob、runoooooob 等，* 号代表前面的字符可以不出现，也可以出现一次或者多次（0次、或1次、或多次）。
 * colou?r 可以匹配 color 或者 colour，? 问号代表前面的字符最多只可以出现一次（0次、或1次）。
 * {n} : n是一个非负整数。匹配确定的n次。例如，"o{2}"不能匹配"Bob"中的"o"，但是能匹配"food"中的两个o。
 * abc:验证提供的字符是否完全匹配abc
 * [abc]:验证提供的单个字符是否匹配其中一个字符(比如a、b、c就true,ab就false)
 * ^[abc]:验证提供的单个字符是否不匹配其中一个字符
 * [a-z]:验证提供的单个字符是否匹配该区间的其中一个字符
 * . : 验证提供的单个字符是否匹配除换行符（\n、\r）之外的任何单个字符，相等于 [^\n\r]。
 * \s : 匹配所有空白符，包括换行(不可见字符)。等价于[ \f\n\r\t\v]。
 * \S : 匹配所有非空白符，不包括换行(可见字符)。等价于[^ \f\n\r\t\v]。则[\s\S]匹配所有
 * \w : 匹配字母、数字、下划线。等价于 [A-Za-z0-9_]
 * \d : 匹配一个数字字符。等价于[0-9]。
 * \D : 匹配一个非数字字符。等价于[^0-9]。
 */
public class RegularUtils {
    /**
     * 验证一个字符是否是小写
     *
     * @param value
     * @return
     */
    public static boolean isLowerCase(String value) {
        return value.matches("[a-z]");
    }

    /**
     * 验证一个字符是否是小写或数字或大写
     *
     * @param value
     * @return
     */
    public static boolean isLowerCaseOrNumOrUpperCase(String value) {
        return value.matches("[a-z0-9A-Z]");
    }

    /**
     * 验证一个字符是否是中文
     *
     * @param value
     * @return
     */
    public static boolean isChinese(String value) {
        return value.matches("[\u4e00-\u6e00]");
    }

    /**
     * 验证一个字符是否是数字
     *
     * @param value
     * @return
     */
    public static boolean isNumber(String value) {
        return value.matches("\\d");
    }

    /**
     * 验证是否匹配字母（不是字符）、数字、下划线(注意:不能匹配$、中文等)
     *
     * @param value
     * @return
     */
    public static boolean isWord(String value) {
        return value.matches("\\w");
    }

    /**
     * 验证是否匹配所有的空白字符(包括换行、空白字符、制表符、空格等,注意不包含空字符串)(不可见字符)
     *
     * @param value
     * @return
     */
    public static boolean isAnyNonPrintable(String value) {
        return value.matches("\\s");
    }

    /**
     * 验证是否匹配任意字符(不包含空白字符)
     *
     * @param value
     * @return
     */
    public static boolean isAnyCharacter(String value) {
        return value.matches(".");
    }
}
